/*     */ package blockbuster.utils.texture;
/*     */ 
/*     */ import java.awt.AlphaComposite;
/*     */ import java.awt.Color;
/*     */ import java.awt.Dimension;
/*     */ import java.awt.Graphics2D;
/*     */ import java.awt.Rectangle;
/*     */ import java.awt.image.BufferedImage;
/*     */ import java.awt.image.DataBufferInt;
/*     */ import java.io.BufferedInputStream;
/*     */ import java.io.ByteArrayInputStream;
/*     */ import java.io.ByteArrayOutputStream;
/*     */ import java.io.FileInputStream;
/*     */ import java.io.IOException;
/*     */ import java.io.InputStream;
/*     */ import java.net.URL;
/*     */ import java.util.ArrayList;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class GifDecoder
/*     */ {
/*  62 */   public static int STATUS_OK = 0;
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*  67 */   public static int STATUS_FORMAT_ERROR = 1;
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*  72 */   public static int STATUS_OPEN_ERROR = 2;
/*     */   
/*     */   protected BufferedInputStream in;
/*     */   
/*     */   protected int status;
/*     */   protected int width;
/*     */   protected int height;
/*     */   protected boolean gctFlag;
/*     */   protected int gctSize;
/*  81 */   protected int loopCount = 1;
/*     */   
/*     */   protected int[] gct;
/*     */   
/*     */   protected int[] lct;
/*     */   protected int[] act;
/*     */   protected int bgIndex;
/*     */   protected int bgColor;
/*     */   protected int lastBgColor;
/*     */   protected int pixelAspect;
/*     */   protected boolean lctFlag;
/*     */   protected boolean interlace;
/*     */   protected int lctSize;
/*     */   protected int ix;
/*     */   protected int iy;
/*     */   protected int iw;
/*     */   protected int ih;
/*     */   protected Rectangle lastRect;
/*     */   protected BufferedImage image;
/*     */   protected BufferedImage lastImage;
/* 101 */   protected byte[] block = new byte[256];
/* 102 */   protected int blockSize = 0;
/*     */ 
/*     */   
/* 105 */   protected int dispose = 0;
/*     */   
/* 107 */   protected int lastDispose = 0;
/*     */   protected boolean transparency = false;
/* 109 */   protected int delay = 0;
/*     */   
/*     */   protected int transIndex;
/* 112 */   protected static int MaxStackSize = 4096;
/*     */   protected short[] prefix;
/*     */   protected byte[] suffix;
/*     */   protected byte[] pixelStack;
/*     */   protected byte[] pixels;
/*     */   protected ArrayList frames;
/*     */   protected int frameCount;
/*     */   
/*     */   static class GifFrame
/*     */   {
/*     */     public BufferedImage image;
/*     */     public int delay;
/*     */     
/*     */     public GifFrame(BufferedImage im, int del) {
/* 126 */       this.image = im;
/* 127 */       this.delay = del;
/*     */     }
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public int getDelay(int n) {
/* 142 */     this.delay = -1;
/* 143 */     if (n >= 0 && n < this.frameCount) {
/* 144 */       this.delay = ((GifFrame)this.frames.get(n)).delay;
/*     */     }
/* 146 */     return this.delay;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public int getFrameCount() {
/* 155 */     return this.frameCount;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public BufferedImage getImage() {
/* 164 */     return getFrame(0);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public int getLoopCount() {
/* 174 */     return this.loopCount;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void setPixels() {
/* 184 */     int[] dest = ((DataBufferInt)this.image.getRaster().getDataBuffer()).getData();
/*     */ 
/*     */     
/* 187 */     if (this.lastDispose > 0) {
/* 188 */       if (this.lastDispose == 3) {
/*     */         
/* 190 */         int n = this.frameCount - 2;
/* 191 */         if (n > 0) {
/* 192 */           this.lastImage = getFrame(n - 1);
/*     */         } else {
/* 194 */           this.lastImage = null;
/*     */         } 
/*     */       } 
/*     */       
/* 198 */       if (this.lastImage != null) {
/*     */         
/* 200 */         int[] prev = ((DataBufferInt)this.lastImage.getRaster().getDataBuffer()).getData();
/* 201 */         System.arraycopy(prev, 0, dest, 0, this.width * this.height);
/*     */ 
/*     */         
/* 204 */         if (this.lastDispose == 2) {
/*     */           
/* 206 */           Graphics2D g = this.image.createGraphics();
/* 207 */           Color c = null;
/* 208 */           if (this.transparency) {
/* 209 */             c = new Color(0, 0, 0, 0);
/*     */           } else {
/* 211 */             c = new Color(this.lastBgColor);
/*     */           } 
/* 213 */           g.setColor(c);
/* 214 */           g.setComposite(AlphaComposite.Src);
/* 215 */           g.fill(this.lastRect);
/* 216 */           g.dispose();
/*     */         } 
/*     */       } 
/*     */     } 
/*     */ 
/*     */     
/* 222 */     int pass = 1;
/* 223 */     int inc = 8;
/* 224 */     int iline = 0;
/* 225 */     for (int i = 0; i < this.ih; i++) {
/* 226 */       int line = i;
/* 227 */       if (this.interlace) {
/* 228 */         if (iline >= this.ih) {
/* 229 */           pass++;
/* 230 */           switch (pass) {
/*     */             case 2:
/* 232 */               iline = 4;
/*     */               break;
/*     */             case 3:
/* 235 */               iline = 2;
/* 236 */               inc = 4;
/*     */               break;
/*     */             case 4:
/* 239 */               iline = 1;
/* 240 */               inc = 2; break;
/*     */           } 
/*     */         } 
/* 243 */         line = iline;
/* 244 */         iline += inc;
/*     */       } 
/* 246 */       line += this.iy;
/* 247 */       if (line < this.height) {
/* 248 */         int k = line * this.width;
/* 249 */         int dx = k + this.ix;
/* 250 */         int dlim = dx + this.iw;
/* 251 */         if (k + this.width < dlim) {
/* 252 */           dlim = k + this.width;
/*     */         }
/* 254 */         int sx = i * this.iw;
/* 255 */         while (dx < dlim) {
/*     */           
/* 257 */           int index = this.pixels[sx++] & 0xFF;
/* 258 */           int c = this.act[index];
/* 259 */           if (c != 0) {
/* 260 */             dest[dx] = c;
/*     */           }
/* 262 */           dx++;
/*     */         } 
/*     */       } 
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public BufferedImage getFrame(int n) {
/* 274 */     BufferedImage im = null;
/* 275 */     if (n >= 0 && n < this.frameCount) {
/* 276 */       im = ((GifFrame)this.frames.get(n)).image;
/*     */     }
/* 278 */     return im;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public Dimension getFrameSize() {
/* 287 */     return new Dimension(this.width, this.height);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public int read(BufferedInputStream is) {
/* 297 */     init();
/* 298 */     if (is != null) {
/* 299 */       this.in = is;
/* 300 */       readHeader();
/* 301 */       if (!err()) {
/* 302 */         readContents();
/* 303 */         if (this.frameCount < 0) {
/* 304 */           this.status = STATUS_FORMAT_ERROR;
/*     */         }
/*     */       } 
/*     */     } else {
/* 308 */       this.status = STATUS_OPEN_ERROR;
/*     */     } 
/*     */     try {
/* 311 */       is.close();
/* 312 */     } catch (IOException iOException) {}
/*     */     
/* 314 */     return this.status;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public int read(InputStream is) {
/* 324 */     init();
/* 325 */     if (is != null) {
/* 326 */       if (!(is instanceof BufferedInputStream))
/* 327 */         is = new BufferedInputStream(is); 
/* 328 */       this.in = (BufferedInputStream)is;
/* 329 */       readHeader();
/* 330 */       if (!err()) {
/* 331 */         readContents();
/* 332 */         if (this.frameCount < 0) {
/* 333 */           this.status = STATUS_FORMAT_ERROR;
/*     */         }
/*     */       } 
/*     */     } else {
/* 337 */       this.status = STATUS_OPEN_ERROR;
/*     */     } 
/*     */     try {
/* 340 */       is.close();
/* 341 */     } catch (IOException iOException) {}
/*     */     
/* 343 */     return this.status;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public int read(String name) {
/* 354 */     this.status = STATUS_OK;
/*     */     try {
/* 356 */       name = name.trim().toLowerCase();
/* 357 */       if (name.contains("file:") || name.indexOf(":/") > 0) {
/* 358 */         URL url = new URL(name);
/* 359 */         this.in = new BufferedInputStream(getURLFileInputStream(url));
/*     */       } else {
/* 361 */         this.in = new BufferedInputStream(new FileInputStream(name));
/*     */       } 
/* 363 */       this.status = read(this.in);
/* 364 */     } catch (IOException e) {
/* 365 */       this.status = STATUS_OPEN_ERROR;
/*     */     } 
/*     */     
/* 368 */     return this.status;
/*     */   }
/*     */   
/*     */   private InputStream getURLFileInputStream(URL url) throws IOException {
/* 372 */     InputStream inputStream = url.openStream();
/* 373 */     ByteArrayOutputStream baos = new ByteArrayOutputStream();
/* 374 */     byte[] buffer = new byte[1024];
/*     */     int len;
/* 376 */     while ((len = inputStream.read(buffer)) > -1) {
/* 377 */       baos.write(buffer, 0, len);
/*     */     }
/* 379 */     baos.flush();
/* 380 */     return new ByteArrayInputStream(baos.toByteArray());
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void decodeImageData() {
/* 388 */     int NullCode = -1;
/* 389 */     int npix = this.iw * this.ih;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */     
/* 408 */     if (this.pixels == null || this.pixels.length < npix) {
/* 409 */       this.pixels = new byte[npix];
/*     */     }
/* 411 */     if (this.prefix == null) this.prefix = new short[MaxStackSize]; 
/* 412 */     if (this.suffix == null) this.suffix = new byte[MaxStackSize]; 
/* 413 */     if (this.pixelStack == null) this.pixelStack = new byte[MaxStackSize + 1];
/*     */ 
/*     */ 
/*     */     
/* 417 */     int data_size = read();
/* 418 */     int clear = 1 << data_size;
/* 419 */     int end_of_information = clear + 1;
/* 420 */     int available = clear + 2;
/* 421 */     int old_code = NullCode;
/* 422 */     int code_size = data_size + 1;
/* 423 */     int code_mask = (1 << code_size) - 1; int code;
/* 424 */     for (code = 0; code < clear; code++) {
/* 425 */       this.prefix[code] = 0;
/* 426 */       this.suffix[code] = (byte)code;
/*     */     } 
/*     */ 
/*     */ 
/*     */     
/* 431 */     int bi = 0, pi = bi, top = pi, first = top, count = first, bits = count, datum = bits;
/*     */     int i;
/* 433 */     for (i = 0; i < npix; ) {
/* 434 */       if (top == 0) {
/* 435 */         if (bits < code_size) {
/*     */           
/* 437 */           if (count == 0) {
/*     */             
/* 439 */             count = readBlock();
/* 440 */             if (count <= 0)
/*     */               break; 
/* 442 */             bi = 0;
/*     */           } 
/* 444 */           datum += (this.block[bi] & 0xFF) << bits;
/* 445 */           bits += 8;
/* 446 */           bi++;
/* 447 */           count--;
/*     */ 
/*     */           
/*     */           continue;
/*     */         } 
/*     */         
/* 453 */         code = datum & code_mask;
/* 454 */         datum >>= code_size;
/* 455 */         bits -= code_size;
/*     */ 
/*     */ 
/*     */         
/* 459 */         if (code > available || code == end_of_information)
/*     */           break; 
/* 461 */         if (code == clear) {
/*     */           
/* 463 */           code_size = data_size + 1;
/* 464 */           code_mask = (1 << code_size) - 1;
/* 465 */           available = clear + 2;
/* 466 */           old_code = NullCode;
/*     */           continue;
/*     */         } 
/* 469 */         if (old_code == NullCode) {
/* 470 */           this.pixelStack[top++] = this.suffix[code];
/* 471 */           old_code = code;
/* 472 */           first = code;
/*     */           continue;
/*     */         } 
/* 475 */         int in_code = code;
/* 476 */         if (code == available) {
/* 477 */           this.pixelStack[top++] = (byte)first;
/* 478 */           code = old_code;
/*     */         } 
/* 480 */         while (code > clear) {
/* 481 */           this.pixelStack[top++] = this.suffix[code];
/* 482 */           code = this.prefix[code];
/*     */         } 
/* 484 */         first = this.suffix[code] & 0xFF;
/*     */ 
/*     */ 
/*     */         
/* 488 */         if (available >= MaxStackSize) {
/* 489 */           this.pixelStack[top++] = (byte)first;
/*     */           continue;
/*     */         } 
/* 492 */         this.pixelStack[top++] = (byte)first;
/* 493 */         this.prefix[available] = (short)old_code;
/* 494 */         this.suffix[available] = (byte)first;
/* 495 */         available++;
/* 496 */         if ((available & code_mask) == 0 && available < MaxStackSize) {
/*     */           
/* 498 */           code_size++;
/* 499 */           code_mask += available;
/*     */         } 
/* 501 */         old_code = in_code;
/*     */       } 
/*     */ 
/*     */ 
/*     */       
/* 506 */       top--;
/* 507 */       this.pixels[pi++] = this.pixelStack[top];
/* 508 */       i++;
/*     */     } 
/*     */     
/* 511 */     for (i = pi; i < npix; i++) {
/* 512 */       this.pixels[i] = 0;
/*     */     }
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected boolean err() {
/* 521 */     return (this.status != STATUS_OK);
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void init() {
/* 528 */     this.status = STATUS_OK;
/* 529 */     this.frameCount = 0;
/* 530 */     this.frames = new ArrayList();
/* 531 */     this.gct = null;
/* 532 */     this.lct = null;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected int read() {
/* 539 */     int curByte = 0;
/*     */     try {
/* 541 */       curByte = this.in.read();
/* 542 */     } catch (IOException e) {
/* 543 */       this.status = STATUS_FORMAT_ERROR;
/*     */     } 
/* 545 */     return curByte;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected int readBlock() {
/* 554 */     this.blockSize = read();
/* 555 */     int n = 0;
/* 556 */     if (this.blockSize > 0) {
/*     */       try {
/* 558 */         int count = 0;
/* 559 */         while (n < this.blockSize) {
/* 560 */           count = this.in.read(this.block, n, this.blockSize - n);
/* 561 */           if (count == -1)
/*     */             break; 
/* 563 */           n += count;
/*     */         } 
/* 565 */       } catch (IOException iOException) {}
/*     */ 
/*     */       
/* 568 */       if (n < this.blockSize) {
/* 569 */         this.status = STATUS_FORMAT_ERROR;
/*     */       }
/*     */     } 
/* 572 */     return n;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected int[] readColorTable(int ncolors) {
/* 582 */     int nbytes = 3 * ncolors;
/* 583 */     int[] tab = null;
/* 584 */     byte[] c = new byte[nbytes];
/* 585 */     int n = 0;
/*     */     try {
/* 587 */       n = this.in.read(c);
/* 588 */     } catch (IOException iOException) {}
/*     */     
/* 590 */     if (n < nbytes) {
/* 591 */       this.status = STATUS_FORMAT_ERROR;
/*     */     } else {
/* 593 */       tab = new int[256];
/* 594 */       int i = 0;
/* 595 */       int j = 0;
/* 596 */       while (i < ncolors) {
/* 597 */         int r = c[j++] & 0xFF;
/* 598 */         int g = c[j++] & 0xFF;
/* 599 */         int b = c[j++] & 0xFF;
/* 600 */         tab[i++] = 0xFF000000 | r << 16 | g << 8 | b;
/*     */       } 
/*     */     } 
/* 603 */     return tab;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void readContents() {
/* 611 */     boolean done = false;
/* 612 */     while (!done && !err()) {
/* 613 */       String app; int i, code = read();
/* 614 */       switch (code) {
/*     */         
/*     */         case 44:
/* 617 */           readImage();
/*     */           continue;
/*     */         
/*     */         case 33:
/* 621 */           code = read();
/* 622 */           switch (code) {
/*     */             case 249:
/* 624 */               readGraphicControlExt();
/*     */               continue;
/*     */             
/*     */             case 255:
/* 628 */               readBlock();
/* 629 */               app = "";
/* 630 */               for (i = 0; i < 11; i++) {
/* 631 */                 app = app + (char)this.block[i];
/*     */               }
/* 633 */               if (app.equals("NETSCAPE2.0")) {
/* 634 */                 readNetscapeExt(); continue;
/*     */               } 
/* 636 */               skip();
/*     */               continue;
/*     */           } 
/*     */           
/* 640 */           skip();
/*     */           continue;
/*     */ 
/*     */         
/*     */         case 59:
/* 645 */           done = true;
/*     */           continue;
/*     */         
/*     */         case 0:
/*     */           continue;
/*     */       } 
/*     */       
/* 652 */       this.status = STATUS_FORMAT_ERROR;
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void readGraphicControlExt() {
/* 661 */     read();
/* 662 */     int packed = read();
/* 663 */     this.dispose = (packed & 0x1C) >> 2;
/* 664 */     if (this.dispose == 0) {
/* 665 */       this.dispose = 1;
/*     */     }
/* 667 */     this.transparency = ((packed & 0x1) != 0);
/* 668 */     this.delay = readShort() * 10;
/* 669 */     this.transIndex = read();
/* 670 */     read();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void readHeader() {
/* 677 */     String id = "";
/* 678 */     for (int i = 0; i < 6; i++) {
/* 679 */       id = id + (char)read();
/*     */     }
/* 681 */     if (!id.startsWith("GIF")) {
/* 682 */       this.status = STATUS_FORMAT_ERROR;
/*     */       
/*     */       return;
/*     */     } 
/* 686 */     readLSD();
/* 687 */     if (this.gctFlag && !err()) {
/* 688 */       this.gct = readColorTable(this.gctSize);
/* 689 */       this.bgColor = this.gct[this.bgIndex];
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void readImage() {
/* 697 */     this.ix = readShort();
/* 698 */     this.iy = readShort();
/* 699 */     this.iw = readShort();
/* 700 */     this.ih = readShort();
/*     */     
/* 702 */     int packed = read();
/* 703 */     this.lctFlag = ((packed & 0x80) != 0);
/* 704 */     this.interlace = ((packed & 0x40) != 0);
/*     */ 
/*     */     
/* 707 */     this.lctSize = 2 << (packed & 0x7);
/*     */     
/* 709 */     if (this.lctFlag) {
/* 710 */       this.lct = readColorTable(this.lctSize);
/* 711 */       this.act = this.lct;
/*     */     } else {
/* 713 */       this.act = this.gct;
/* 714 */       if (this.bgIndex == this.transIndex)
/* 715 */         this.bgColor = 0; 
/*     */     } 
/* 717 */     int save = 0;
/* 718 */     if (this.transparency) {
/* 719 */       save = this.act[this.transIndex];
/* 720 */       this.act[this.transIndex] = 0;
/*     */     } 
/*     */     
/* 723 */     if (this.act == null) {
/* 724 */       this.status = STATUS_FORMAT_ERROR;
/*     */     }
/*     */     
/* 727 */     if (err())
/*     */       return; 
/* 729 */     decodeImageData();
/* 730 */     skip();
/*     */     
/* 732 */     if (err())
/*     */       return; 
/* 734 */     this.frameCount++;
/*     */ 
/*     */     
/* 737 */     this.image = new BufferedImage(this.width, this.height, 3);
/*     */ 
/*     */     
/* 740 */     setPixels();
/*     */     
/* 742 */     this.frames.add(new GifFrame(this.image, this.delay));
/*     */     
/* 744 */     if (this.transparency) {
/* 745 */       this.act[this.transIndex] = save;
/*     */     }
/* 747 */     resetFrame();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void readLSD() {
/* 757 */     this.width = readShort();
/* 758 */     this.height = readShort();
/*     */ 
/*     */     
/* 761 */     int packed = read();
/* 762 */     this.gctFlag = ((packed & 0x80) != 0);
/*     */ 
/*     */     
/* 765 */     this.gctSize = 2 << (packed & 0x7);
/*     */     
/* 767 */     this.bgIndex = read();
/* 768 */     this.pixelAspect = read();
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void readNetscapeExt() {
/*     */     do {
/* 776 */       readBlock();
/* 777 */       if (this.block[0] != 1)
/*     */         continue; 
/* 779 */       int b1 = this.block[1] & 0xFF;
/* 780 */       int b2 = this.block[2] & 0xFF;
/* 781 */       this.loopCount = b2 << 8 | b1;
/*     */     }
/* 783 */     while (this.blockSize > 0 && !err());
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected int readShort() {
/* 791 */     return read() | read() << 8;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void resetFrame() {
/* 798 */     this.lastDispose = this.dispose;
/* 799 */     this.lastRect = new Rectangle(this.ix, this.iy, this.iw, this.ih);
/* 800 */     this.lastImage = this.image;
/* 801 */     this.lastBgColor = this.bgColor;
/* 802 */     int dispose = 0;
/* 803 */     boolean transparency = false;
/* 804 */     int delay = 0;
/* 805 */     this.lct = null;
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   protected void skip() {
/*     */     do {
/* 814 */       readBlock();
/* 815 */     } while (this.blockSize > 0 && !err());
/*     */   }
/*     */ }


/* Location:              D:\fanbian\[D][龙之核心]DragonCore-2.6.0.3.jar!\blockbuste\\utils\texture\GifDecoder.class
 * Java compiler version: 8 (52.0)
 * JD-Core Version:       1.1.3
 */